package com.sn.utils;

import com.sn.pojo.News;
import com.sn.pojo.NewsItem;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

public class NanXInXiUtils {
    //南京信息工程大学
    private String uri = "https://news.nuist.edu.cn/xykx_1147/list"+page+".htm";//https://news.nuist.edu.cn/xykx_1147/list2.htm
    private static int page=1;

    public static void main(String[] args) {
//        List<News> news = new NanXInXiUtils().getNews();
//        System.out.println(news);
        NewsItem item = new NanXInXiUtils().getItem("https://news.nuist.edu.cn/2022/0119/c1147a189640/page.htm");
        System.out.println(item);
    }
    //分析:南京信息工程大学 新闻列表包裹在<ul class="col_list clearfix">标签下的li标签
    //新闻类别在 <h2 class="column-title">里面
    public List<News> getNews() {
        //使用工具类获取client连接池,获取client对象来请求网页
        PoolingHttpClient httpClient=new PoolingHttpClient();
        String content = httpClient.doGetHtml(uri);
        System.out.println("是否进行了翻页?信工"+page);
        System.out.println("看一下地址 信工"+uri);
        page++;
        List<News>newsList=new ArrayList<>();
        Document doc = Jsoup.parse(content);
        //首先获取分类
        String category = doc.getElementsByClass("column-title").text();
        //第一步先获取ul
        Element ul = doc.getElementsByClass("col_list clearfix").first();
        //第二步，解析ul
        Elements lis = ul.getElementsByTag("li");
        for (Element li : lis) {
            //遍历li集合,得到a标签
            Elements a = li.getElementsByTag("a");
            String title = a.text();//获取标题
            String href = a.attr("href");// 需要拼接才能跳转 -->https://news.nuist.edu.cn +/2022/0302/c1147a190380/page.htm
            href="https://news.nuist.edu.cn"+href;
            System.out.println("标题:"+title+ "链接"+href);
            News news=new News();
            news.setNHref(href);//设置链接
            news.setNTitle(title);//设置标题
            news.setSId(6);//设置学校id
            news.setNGetTime(Tools.getFormatDate(new Date()));//设置爬取时间
            news.setNCategory(category);//设置分类
            newsList.add(news);//添加
        }
        return newsList;
    }
    //分析:南京信息工程大学新闻详情页  发布时间 <span class="arti-update">唯一标签
    //新闻作者: <span class="arti-info"> 第一个标签
    //新闻内容: <div class='wp_articlecontent'> 里面的p标签下的文字集合
    public NewsItem getItem(String iUri){
        //使用工具类获取client连接池,获取client对象来请求网页
        PoolingHttpClient httpClient=new PoolingHttpClient();
        String content = httpClient.doGetHtml(iUri);

        //直接使用jsoup解析content
        Document doc = Jsoup.parse(content);
        //第一步先获取div
        Element div = doc.getElementsByClass("wp_articlecontent").first();

        //第二步获取每个p标签的text,通过字符串拼接接起来

        List<String> list = div.getElementsByTag("p").eachText();
        StringBuffer sb=new StringBuffer();
        for (String s : list) {
            sb.append(s);
        }
        String values = sb.toString();//拼接得到新闻详情内容
        //获取发布时间 --> class="infos"下的 第二个li标签里面的所有a标签下的text
        Element span = doc.getElementsByClass("arti-update").first();
        String putDate = span.text();
        NewsItem newsItem=new NewsItem();
        //获取作者:
        Element span1 = doc.getElementsByClass("arti-info").first();
        String text = span1.text();
        String author=text.split("来源：")[1];;
        newsItem.setNAuthor(author);//设置作者
        newsItem.setNValue(values);//设置内容
        newsItem.setNCreateTime(putDate);//设置发布时间
        return newsItem;
    }
}
